WIFI AP 和STA同时开启


1. 概述

sta模式:wifi作为client,去连接AP/router的工作模式。

ap模式:wifi作为热点,供其他设备连接。


2. 代码修改和配置

  1. 配置,然后编译。

    1. 默认配置中已经开启wifi。

    2. 开启zk_full的模式:vim project/release/customer_tailor/nvr_i2m_display_glibc_tailor.mk verify_zk_full:=enable

    3. 避免UI调用wifi冲突,将sdk\verify\application\zk_full\demo.sh 最后一行代码拿掉。

      ........
      
      cd /customer
      
      chmod 777 zkgui
      
      #./zkgui &
      
    4. 编译,升级。重启。


3. 修改板端行为


3.1. 开启sta模式

  1. 添加AP热点信息

    / # vi appconfigs/wpa_supplicant.conf
    ctrl_interface=/tmp/wifi/run/wpa_supplicant
    update_config=1
    
    network={
        ssid="aryl iPhone"
        psk="123456789a"
    }
    
  2. wifi 模块初始化

    cd /config/wifi
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib:`pwd`
    

    执行初始化脚本:

    ssd20x的平台上执行 ssw01bInit.sh

    ssd21x的平台上执行 sigma_wifi_init.sh

  3. 测试wifi 连接

    ./wpa_supplicant -Dnl80211 -i wlan0 -c /appconfigs/wpa_supplicant.conf -d & sleep 2
    
    udhcpc  -i wlan0 -s /etc/init.d/udhcpc.script &
    

    查询连接状态:

    ./wpa_cli -i wlan0 -p /tmp/wifi/run/wpa_supplicant status
    
  4. ping 是否连接到网络中。

    ping -I wlan0 14.215.177.39
    
  5. DNS支持

    /etc/resolv.conf 添加 nameserver 8.8.8.8;

    如果测试的时候,/etc/resolv.conf 文件缺失或不可写入,可以在ssd21x上rootfs_dispcam.mk中默认添加dns server。

    ssd20x系列修改rootfs.mk

    touch $(OUTPUTDIR)/rootfs/etc/resolv.conf
    echo "nameserver 202.96.128.86" >> $(OUTPUTDIR)/rootfs/etc/resolv.conf
    echo "nameserver 8.8.8.8" >> $(OUTPUTDIR)/rootfs/etc/resolv.conf;
    

    再导入dns支持库路径,取决于libdns的路径。

    export LD_LIBRARY_PATH=$LD_LIBRARY_ifPATH:/customer/libdns
    

    默认在customer/libdns路径下有对应的lib。

    如果文件夹缺失,请在相应的编译器下,将" libnss_dns* "," libnss_files* "," libresolv* " 文件拷贝过来使用。

    ping -I wlan0 www.baidu.com 
    /config/wifi # ping -I wlan0 www.baidu.com
    
    PING www.baidu.com (163.177.151.109): 56 data bytes
    64 bytes from 163.177.151.109: seq=0 ttl=55 time=8.638 ms
    64 bytes from 163.177.151.109: seq=1 ttl=55 time=11.019 ms
    64 bytes from 163.177.151.109: seq=2 ttl=55 time=8.133 ms
    64 bytes from 163.177.151.109: seq=3 ttl=55 time=8.579 ms
    

如果以上步骤测试均正常,sta模式验证完毕。


3.2. 开启AP模式

ifconfig p2p0 up
ifconfig p2p0 192.168.1.100 netmask 255.255.255.0
./hostapd -B /config/wifi/hostapd.conf
./dnsmasq -i p2p0 --no-daemon -C /config/wifi/dnsmasq.conf &

查看连接设备信息:

./hostapd_cli -i p2p0 -p /var/run/hostapd all_sta &

通过pc 搜索ssid:ssw101bap passwd:12345678 (可以修改hostapd.conf 的ssid和password)

如果以上步骤测试均正常,ap模式验证完毕。